feat: Add Detailed Grant Impact Metadata Schema with grant_id reference (#150 #97)#193
Merged
JerryIdoko merged 4 commits intoVesting-Vault:mainfrom Mar 30, 2026
Merged
Conversation
…d reference - Added `grant_id` field to the vesting schedule to link with Grant-Stream proposals - Created `GrantImpactMetadata` struct for rich impact tracking - Enables full-lifecycle visibility between Grant-Stream proposals and Vesting Vault schedules - Supports auditors and the Drips Wav program by connecting promised work to actual vested rewards - Maintains backward compatibility with existing vesting schedules Closes Vesting-Vault#150 Vesting-Vault#97
|
@Tolais Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
- Added Gas Treasury mechanism to subsidize transaction fees for the first 100 users - Users with < 5 XLM balance can now claim vesting rewards with zero gas cost (contract pays fee) - Implemented `GasSubsidyTracker` to track subsidized claims - Added `claim_with_subsidy()` function that signs and pays fee from treasury if eligible - Includes subsidy limit (100 users) and minimum XLM threshold check Closes Vesting-Vault#149 Vesting-Vault#96
- Created `scripts/mainnet-sanity-check.sh` for comprehensive pre-mainnet validation - Simulates real usage: 10 vesting schedule creations, 100 subsidized claims, 10 revocations, and 5 admin changes - Runs on a local fork of mainnet to catch "mainnet-only" bugs - Includes balance accuracy verification and gas subsidy testing - Provides institutional-grade confidence before locking significant value Closes Vesting-Vault#152 Vesting-Vault#99
- Added "Final Release" protection for the last 10% of vesting schedules - Created `claim_final_with_community_approval()` function that requires community vote (default 66% threshold) - Prevents "Rug-at-the-Finish-Line" by enforcing a "Community Handshake" before final tokens are released - Added `FinalClaimVeto` storage and `CommunityVoteThreshold` configuration - Ensures founders maintain skin in the game until successful project launch - Strengthens long-term alignment and protects stakeholder value Closes Vesting-Vault#153 Vesting-Vault#100
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR implements Issues #150 & #97 - Add Detailed_Grant_Impact_Metadata_Schema.
Overview
This change adds a strong link between Vesting Vault and Grant-Stream by tying each vesting schedule to its original grant proposal via a
grant_id.This "inter-link" provides full-lifecycle visibility — auditors and stakeholders can now clearly see what work was promised in a Grant-Stream proposal and what rewards are being vested on the other side. It is a key requirement for the Drips Wav program.
Changes
GrantImpactMetadatastruct containing:grant_id— Reference to the Grant-Stream proposalproposal_title— Human-readable grant titlemilestone_count,impact_description,categoryrequested_byandapproved_atVestingSchedulestruct to include optionalgrant_impactfieldcreate_vesting_schedule()to accept grant metadata parametersget_grant_impact()helper function for easy queryingBenefits
Technical Notes
grant_impactis optional to avoid breaking existing schedulesu64forgrant_idto match Grant-Stream's ID formatCloses #150 #97
Closes #149
Closes #152
Closes #153